"""
定义用户管理视图
"""
from rest_framework.response import Response
from rest_framework.generics import ListAPIView,CreateAPIView
from rest_framework.pagination import PageNumberPagination
from meiduo_admin.serializers.user_serializers import *
from meiduo_admin.custom_page import MyPage


class UserListCreateView(ListAPIView, CreateAPIView):
    queryset = User.objects.all()
    serializer_class = UserModelSerializer

    # 指定当前视图序列化返回使用的分页器
    pagination_class = MyPage


    # 根据查询字符串参数keyword过滤出用户（用户名中包含keyword）
    # 规则：User.objects.filter(username__contains=keyword)
    def get_queryset(self):
        """
        根据keyword过滤出序列化的数据集
        :return: 查询集
        """
        # 1、获取前端传递的查询字符串参数keyword
        # 请求对象request，如何获取呢？！
        # 问题：如何在一个非视图函数中，获取请求对象
        # 答：框架在接收到一个请求之后，会把请求对象，封装在视图对象的一个request属性中；
        # 换句话说就是，视图对象中有一个属性request就是请求对象
        keyword = self.request.query_params.get("keyword")
        if not keyword:
            # 如果用户没有传递keyword，默认返回所有数据
            return self.queryset.all() # .all()目的是查寻数据库获取最新数据

        # 2、根据keyword过滤出查询集，返回
        return self.queryset.filter(
            username__contains=keyword
        )















